package com.ruoyi.consumer.utils;

import java.lang.Math;

public class DistanceCalculator {

    public static double calculateDistance(double lat1, double lng1,double fixedLat1,double fixedLng1) {
        System.out.println("计算地点经纬度：" + fixedLat1 + ", " + fixedLng1);

        // 将经纬度转换为弧度
        double rad1 = Math.toRadians(fixedLat1);
        double rad2 = Math.toRadians(lat1);

        // 计算经纬度差值
        double a = rad1 - rad2;
        double b = Math.toRadians(fixedLng1) - Math.toRadians(lng1);

        // 使用Haversine公式计算距离
        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
                Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2)));
        s = s * 6378.137;  // 6378.137是地球半径，用于将弧长转换为实际距离（以公里为单位）
        s = Math.round(s * 10000) / 10000.0;  // 四舍五入保留四位小数
        return Double.parseDouble(String.format("%.2f", s));  // 返回距离，保留两位小数
    }

}
